#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using std::cout;
using std::endl;
using std::cerr;
using std::cin;
using std::ifstream;
using std::string;
using std::vector;

void test()
{
    //对于文件输入流而言，如果文件不存在，那么就会报错；如果文件
    //存在，才可以进行后续的操作
    ifstream ifs("PointTmp.cc");
    if(!ifs.good())
    {
        cerr << "ifstream is not good" << endl;
        return ;
    }

    string word;
    //对于文件输入流而言，默认情况以空格为分隔符
    while(ifs >> word)
    {
        cout << word <<" ";;
    }
    cout << endl;

    ifs.close();//关闭文件
}

void test2()
{
    //对于文件输入流而言，如果文件不存在，那么就会报错；如果文件
    //存在，才可以进行后续的操作
    ifstream ifs("PointTmp.cc");
    if(!ifs.good())
    {
        cerr << "ifstream is not good" << endl;
        return ;
    }

    string line[60];
    size_t idx = 0;
    //对于文件输入流而言，默认情况以空格为分隔符
    while(getline(ifs, line[idx]))
    {
        cout << line[idx] << endl;;
        ++idx;
    }
    cout << endl;

    cout << "line[42] = " << line[42] << endl;

    ifs.close();//关闭文件
}

void test3()
{
    //对于文件输入流而言，如果文件不存在，那么就会报错；如果文件
    //存在，才可以进行后续的操作
    ifstream ifs("PointTmp.cc");
    if(!ifs.good())
    {
        cerr << "ifstream is not good" << endl;
        return ;
    }

    //动态的扩容
    vector<string> vec;
    vec.reserve(60);//预留空间
    string line;
    //对于文件输入流而言，默认情况以空格为分隔符
    while(getline(ifs, line))
    {
        vec.push_back(line);
    }
    cout << endl;

    cout << "vec[42] = " << vec[42] << endl;

    ifs.close();//关闭文件
}
int main(int argc, char **argv)
{
    test3();
    return 0;
}

